package com.ttbj.rule.service;

import org.apache.commons.lang.StringUtils;

import com.ttbj.exception.WebException;
import com.ttbj.move_rule.po.BillDistance;
import com.ttbj.rule.po.BillDis;
import com.ttbj.rule.po.CarriageRule;
import com.ttbj.util.Assert;

/**
 * 权重计费服务
 * 参数整合计费规则接口
 * @author Administrator
 *
 */
public interface WtBillService {
	
	/**
	 * 在计费规则整合到货运规则
	 * 加入车型比重，昼夜比重，服务比重（暂时不用）距离对象
	 * 获取到车辆类型权重
	 * 
	 * @return
	 * @throws Exception 
	 */
	default CarriageRule addWtBillRule(String carType) throws Exception{
		if(StringUtils.isBlank(carType)){
			return null;
		}
		Float wtCarType = getWtCarType(carType);
		Float wtTiming = getWtTiming(1);
		BillDis billDistance = getRuleDistance();
		return  new CarriageRule(3, billDistance, wtTiming, wtCarType, null);
	};
	
	/**
	 * 车辆类型权重
	 * @param carType
	 * @return
	 * @throws Exception
	 */
	Float getWtCarType(String carType) throws  Exception;
	
	/**
	 * 查询白天和夜晚权重
	 * 货运和搬运计费规则都将复用
	 * 根据是否是货运还是搬运id查询白天和夜晚权重
	 * 根据当前时间算出是白天还是黑夜
	 * @param timingId
	 * 			1:搬运 2：货运
	 * @return
	 * @throws Exception 
	 */
	Float getWtTiming(int timingId) throws Exception;
	
	/**
	 * 距离规则
	 * @return
	 * @throws Exception 
	 */
	BillDis getRuleDistance() throws Exception;
}
